//
//  ZFHorizontalMenuView.h
//  components
//
//  Created by linzaifei on 2021/9/2.
//

#import <UIKit/UIKit.h>
#import "ZFPageControlView.h"
#import "SDWebImage/SDWebImage.h"
#import "Masonry/Masonry.h"
@class ZFHorizontalMenuView;


NS_ASSUME_NONNULL_BEGIN
@protocol ZFHorizontalMenuViewDataSource <NSObject>
@required
///需要显示的个数
- (NSInteger)zf_horizontalMenuView:(ZFHorizontalMenuView *)horizontalMenuView;

@optional
////对应每一个title
-(NSString *)zf_horizontalMenuView:(ZFHorizontalMenuView *)horizontalMenuView titleForItemAtIndex:(NSInteger)index;
///自定义样式
-(NSAttributedString *)zf_horizontalMenuView:(ZFHorizontalMenuView *)horizontalMenuView attributeTitleForItemAtIndex:(NSInteger)index;

///对应每一个icon网络的
-(NSURL *)zf_horizontalMenuView:(ZFHorizontalMenuView *)horizontalMenuView urlForItemAtIndex:(NSInteger)index;
///设置本地图片 优先级> 网络的
-(UIImage *)zf_horizontalMenuView:(ZFHorizontalMenuView *)horizontalMenuView imageForItemAtIndex:(NSInteger)index;

@end

@protocol ZFHorizontalMenuViewDelegate <NSObject>
@optional;
///设置每页的行数,默认2
- (NSInteger)zf_numOfPageRowsInHorizontalMenuView:(ZFHorizontalMenuView *)horizontalMenuView;
///设置每页的列数 默认 4
- (NSInteger)zf_numOfPageColumnsInHorizontalMenuView:(ZFHorizontalMenuView *)horizontalMenuView;
///图片大小
-(CGSize)zf_imageSizeInHorizontalMenuView:(ZFHorizontalMenuView *)horizontalMenuView;
///点击cell
-(void)zf_horizontalMenuView:(ZFHorizontalMenuView *)horizontalMenuView  didSelectItemAtIndexPath:(NSInteger )index;

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////如果你需要自定义cell样式，请在实现此代理方法返回你的自定义cell的class。
- (Class)zf_customCollectionViewCellClassForHorizontalMenuView:(ZFHorizontalMenuView *)view;
/////如果你需要自定义cell样式，请在实现此代理方法返回你的自定义cell的Nib。
- (UINib *)zf_customCollectionViewCellNibForHorizontalMenuView:(ZFHorizontalMenuView *)view;
/////如果你自定义了cell样式，请在实现此代理方法为你的cell填充数据以及其它一系列设置
- (void)zf_setCustomCell:(UICollectionViewCell *)cell forIndex:(NSInteger)index horizontalMenuView:(ZFHorizontalMenuView *)view;
@end

@interface ZFHorizontalMenuView : UIView

@property(nonatomic,weak) id<ZFHorizontalMenuViewDataSource> dataSource;
@property(nonatomic,weak) id<ZFHorizontalMenuViewDelegate>  delegate;
///默认图
@property (strong, nonatomic)UIImage *defaultImage;
@property(nonatomic,strong,readonly)ZFPageControlView *pageControlView;
///四边边距 默认为（0，0，0，0）
@property (nonatomic) UIEdgeInsets contentInset;
///水平方向两个item 距离 默认为0
@property (nonatomic) CGFloat minimumLineSpacing;
///垂直方向两个item距离 默认为0
@property (nonatomic) CGFloat minimumInteritemSpacing;

///需不需要折叠动画 即当最后一页不满一行时才会触发 默认NO
@property(nonatomic,assign)BOOL isNeedAnimation;

///刷新数据
-(void)reloadData;
@end

@interface ZFMenuCollectionCell : UICollectionViewCell

@property(nonatomic,strong,readonly)UIImageView *imageView;
@property(nonatomic,strong,readonly)UILabel *titleLabel;

@end



NS_ASSUME_NONNULL_END
